<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script>
		// var arr = [1,[[2,3],4],[5,6]];

		// var flat = function* (a) {
		// 	a.forEach(function(item){
		// 		if(typeof item !== 'number'){
		// 			yield* flat(item);
		// 		}else{
		// 			yield item;
		// 		}
		// 	})
		// }

		// for(var f of flat(arr)){
		// 	console.log(f);
		// }
		// error demo 

		var arr = [1,[[2,3],4],[5,6]];
		var flat = function* (a) {
			var length = a.length;
			for(var i = 0; i < length; i++){
				var item = a[i];
				if(typeof item !== 'number'){
					yield* flat(item);
				}else{
					yield item;
				}
			}
		}

		for(var f of flat(arr)){
			console.log(f);
		}	

		function* demo(){
			// console.log('Hello' + yield); //SyntaxError
			// console.log('Hello' + yield 123); //SyntaxError
			
			console.log('hello' + (yield));   //OK
			console.log('hello' + (yield 123)); //OK
			//yield在一个表达式中 必须在园括号里
			
			foo(yield 'a', yield 'b'); // OK
  		let input = yield; // OK
  		//函数参数或放在赋值表达式的右边，可以不加括号。
		}
	</script>
</head>
<body>
	
</body>
</html>